// 子弹
function Bullet(Plane) {
    this.init = function() {
        // 子弹的宽高
        this.width = 20;
        this.height = 38;

        // 子弹在canvas上的坐标
        this.x = Plane.x + Plane.width / 2 - this.width / 2;
        this.y = Plane.y - this.height;

        // 子弹移动速度
        this.moveX = 5;
        this.moveY = 5;

        // 默认子弹展示
        this.isShow = true;

        // 绘制子弹
        this.img = Tool.getImage('./images/bullet1.png');
    };
    this.init();

    this.draw = function() {
        if (this.isShow) {
            // 移动
            this.move();

            // 绘制
            ctx.drawImage(this.img, this.x, this.y);

        }
    };

    this.move = function() {
        this.y -= this.moveY;

        // 子弹如果超出canvas上边界，则删除自身
        if (this.y < -this.height) {
            // 隐藏
            this.isShow = false;
        }
    }
}

// 子弹集合
function BulletSet(Plane) {
    // 子弹集合
    this.set = [];

    // 初始化
    this.init = function() {
        // 初始化的时间
        var time = new Date().getTime();

        // 上次生成时间
        this.lasttime = time;

        // 子弹生成时间间隔
        this.interval = 500;
    };
    this.init();

    // 创建子弹
    this.create = function(audio) {
        // 获取新时间
        var newtime = new Date().getTime();

        // 判断是否该绘制新子弹（超过指定时间间隔，生成子弹）
        if (newtime - this.lasttime > this.interval) {
            // 生成新的子弹
            var newBullet = new Bullet(Plane);
            audio.play();

            // 并且推入到数组中
            this.set.push(newBullet);

            // 并更新最后一次生成时间
            this.lasttime = newtime;
        }
    };

    // 绘制子弹集合
    this.draw = function(audio) {
        // 创建子弹
        this.create(audio);

        // 循环子弹进行绘制
        for (var i = 0; i < this.set.length; i++) {
            // 子弹展示，则绘制
            if (this.set[i].isShow) {
                this.set[i].draw(audio);
            } else {
                // 子弹已经出界，删除该元素
                this.set.splice(i, 1);
            }
        }
    }
}